%!TEX program = xelatex
\documentclass[12pt]{article}
\usepackage{ctex}
\usepackage{amsmath, amssymb}
\usepackage{graphicx, color}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usepackage{pgfplots} 
\pgfplotsset{compat=1.18}
\usepackage{geometry}
\geometry{a4paper,scale=0.8}

\title{人口模型作业题}
\author{常微分方程课程}
\date{2025年}

\begin{document}

\maketitle

\section{问题叙述}
人口增长是人类社会面临的重要问题之一，对经济发展、资源分配、环境保护等方面都有深远影响。1798年，英国牧师马尔萨斯（Malthus）提出了著名的人口理论，认为人口将以几何级数增长，而生存资料只能以算术级数增长，最终会导致人口过剩和资源短缺。

考虑一个封闭地区的人口增长问题，假设该地区初始人口为$N_0$，在$t=0$时刻开始观测。请基于微分方程理论，建立描述该地区人口随时间变化的数学模型，并分析其长期发展趋势。

\section{建立数学模型}
\subsection{Malthus模型}
根据马尔萨斯理论，人口增长率与当前人口数量成正比。设$N(t)$为$t$时刻的人口数量，$r$为相对增长率（常数），建立Malthus模型的微分方程：

$$\frac{dN}{dt} = rN$$

\subsection{Logistic模型}
由于自然资源和环境条件的限制，人口增长不可能无限进行。1838年，Verhulst提出了Logistic模型，考虑环境承载能力的限制。设$a$为自然增长率，$b$为环境抑制系数，建立Logistic模型的微分方程：

$$\frac{dN}{dt} = (a-bN)N$$

请分别分析这两个模型的数学性质和生物学意义。

\section{参数估计}
假设对某地区进行了人口统计，得到以下数据：
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|}
\hline
年份 & 1950 & 1960 & 1970 & 1980 & 1990 \\
\hline
人口(百万) & 2.5 & 3.0 & 3.7 & 4.4 & 5.3 \\
\hline
\end{tabular}
\end{center}

\begin{enumerate}
\item 利用Malthus模型，估算该地区的相对增长率$r$和初始人口$N_0$
\item 利用Logistic模型，假设该地区的环境承载能力为12百万，估算参数$a$和$b$
\item 比较两种模型对已知数据的拟合效果
\end{enumerate}

\section{理论求解}
\subsection{Malthus模型求解}
对于微分方程 $\frac{dN}{dt} = rN$：
\begin{enumerate}
\item 使用分离变量法求出通解
\item 利用初始条件$N(0) = N_0$求出特解
\item 分析解的性质：增长趋势、增长率变化等
\end{enumerate}

\subsection{Logistic模型求解}
对于微分方程 $\frac{dN}{dt} = (a-bN)N$：
\begin{enumerate}
\item 使用分离变量法求出通解（提示：使用部分分式分解）
\item 利用初始条件$N(0) = N_0$求出特解
\item 分析平衡点及其稳定性
\item 确定解的渐近行为（环境承载能力）
\end{enumerate}

\section{编程计算}
使用Python或其他编程语言，完成以下任务：

\begin{enumerate}
\item 根据参数估计部分得到的参数值，编写程序绘制Malthus模型和Logistic模型的人口增长曲线
\item 在同一张图上绘制实际数据点和两个模型的预测曲线
\item 计算并比较两个模型的误差（如均方误差）
\item 预测2000年和2010年的人口数量，并与实际数据比较
\end{enumerate}

参考代码框架：
\begin{verbatim}
import numpy as np
import matplotlib.pyplot as plt

# 参数定义
# Malthus模型参数
r_malthus = ?  # 马尔萨斯增长率
N0 = ?         # 初始人口

# Logistic模型参数
a_logistic = ? # 自然增长率
b_logistic = ? # 环境抑制系数
K = ?          # 环境承载能力

# Malthus模型函数
def malthus_model(t, N0, r):
    return N0 * np.exp(r * t)

# Logistic模型函数
def logistic_model(t, N0, a, b):
    return a / (b + (a/b - N0) * np.exp(-a * t))

# 时间范围
t = np.linspace(0, 60, 1000)  # 0-60年（1950-2010）

# 绘图
plt.figure(figsize=(12, 8))
plt.plot(t, malthus_model(t, N0, r_malthus), label='Malthus模型', linewidth=2)
plt.plot(t, logistic_model(t, N0, a_logistic, b_logistic), 
         label='Logistic模型', linewidth=2)

# 实际数据点
years = [0, 10, 20, 30, 40]  # 相对于1950年的年份
populations = [2.5, 3.0, 3.7, 4.4, 5.3]  # 人口数据
plt.scatter(years, populations, color='red', s=100, label='实际数据', zorder=5)

plt.xlabel('年份 (1950年起)')
plt.ylabel('人口 (百万)')
plt.title('人口增长模型比较')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
\end{verbatim}

\section{模拟仿真}
\begin{enumerate}
\item 使用数值方法（如欧拉法或龙格-库塔法）求解微分方程
\item 比较数值解与解析解的差异
\item 探讨不同参数设置下模型的行为变化
\item 分析两个模型的适用范围和局限性
\end{enumerate}

\section{拓展问题}
\begin{enumerate}
\item 考虑引入死亡率随人口密度变化的因素，建立改进的模型
\item 讨论在人口模型中引入时间延迟的合理性及其数学处理方法
\item 研究多地区人口迁移对单个地区人口模型的影响
\item 探讨人口老龄化等因素对基本模型的修正
\end{enumerate}

\section{实验报告要求}
请提交包含以下内容的实验报告：
\begin{enumerate}
\item 完整的数学模型推导过程
\item 参数估计方法和详细步骤
\item 理论求解的完整解答
\item 编程代码和数值结果
\item 模拟仿真结果分析
\item 两个模型的比较和评价
\item 拓展问题的思考和解答
\item 对人口模型在实际应用中的理解
\end{enumerate}

\end{document}